package com.dingding.action;

import org.apache.log4j.Logger;

import com.dingding.bean.databean.request.ReqRongCloud;

/**
 * @ClassName: RongCloudNotifyAction 
 * @Description: 融云通知Action
 * @author YHQ
 * @date 2016年4月20日 上午11:22:35
 */
@SuppressWarnings("serial")
public class RongCloudNotifyAction extends BaseAction {

	private Logger log = Logger.getLogger(this.getClass());
	
	//发送用户 Id。
	private String fromUserId;
	//接收用户 Id，即为客户端 targetId。
	private String toUserId;
	//消息类型，文本消息 RC:TxtMsg 、 图片消息 RC:ImgMsg 、语音消息 RC:VcMsg 、图文消息 RC:ImgTextMsg 、位置消息 RC:LBSMsg 、添加联系人消息 RC:ContactNtf 、提示条通知消息 RC:InfoNtf 、资料通知消息 RC:ProfileNtf 、通用命令通知消息 RC:CmdNtf 、客服握手消息 RC:HsMsg 、客服挂断消息 RC:SpMsg
	private String objectName;
	//发送消息内容。
	private String content;
	//服务端收到客户端发送消息时的服务器时间（1970年到现在的毫秒数）。
	private String timestamp;
	//会话类型，二人会话是 PERSON 、讨论组会话是 PERSONS 、群组会话是 GROUP 、聊天室会话是 TEMPGROUP 、客服会话是 CUSTOMERSERVICE 、 系统通知是 NOTIFY 、应用公众服务是 MC 、公众服务是 MP。客户端 SDK 中为 ConversationType ，二人会话是 1 、讨论组会话是 2 、群组会话是 3 、聊天室会话是 4 、客服会话是 5 、 系统通知是 6 、应用公众服务是 7 、公众服务是 8。
	private String channelType;
	//timestamp 的别名，主要为兼容一些外部框架使用（1970年到现在的毫秒数）。
	private String msgTimestamp;
	//可通过 msgUID 确定消息唯一。
	private String msgUID;
	
	/**
	 * @Title: synchronizationChatData 
	 * @Description: 同步聊天数据
	 * @author YHQ 
	 * @return String    返回类型
	 */
	public String synchronizationChatData(){
		
		//融云回调的聊天记录
		ReqRongCloud reqRongCloud = new ReqRongCloud();
	
		reqRongCloud.setFromUserId(fromUserId);
		reqRongCloud.setToUserId(toUserId);
		reqRongCloud.setObjectName(objectName);
		reqRongCloud.setContent(content);
		reqRongCloud.setTimestamp(timestamp);
		reqRongCloud.setChannelType(channelType);
		reqRongCloud.setMsgTimestamp(msgTimestamp);
		reqRongCloud.setMsgUID(msgUID);
		
		//保存聊天记录
		boolean flag = super.chatMessageService.saveChatMessage(reqRongCloud);
		
//		判断聊天记录是否添加成功，如果成功将200写入流
		if(flag){
			returnSuccess();
		}
		
		return null;
	}
	
	
	
	
	@Override
	public String toString() {
		return "RongCloudNotifyAction [log=" + log + ", fromUserId=" + fromUserId + ", toUserId=" + toUserId
				+ ", objectName=" + objectName + ", content=" + content + ", timestamp=" + timestamp + ", channelType="
				+ channelType + ", msgTimestamp=" + msgTimestamp + ", msgUID=" + msgUID + "]";
	}




	/**
	 * @Title: returnSuccess
	 * @Description: 打印success，并关闭流
	 * @return void
	 * @throws
	 */
	private void returnSuccess() {
		super.getWriter().print("200");
		super.getWriter().flush();
		super.getWriter().close();
	}
	
	public Logger getLog() {
		return log;
	}
	public void setLog(Logger log) {
		this.log = log;
	}
	public String getFromUserId() {
		return fromUserId;
	}
	public void setFromUserId(String fromUserId) {
		this.fromUserId = fromUserId;
	}
	public String getToUserId() {
		return toUserId;
	}
	public void setToUserId(String toUserId) {
		this.toUserId = toUserId;
	}
	public String getObjectName() {
		return objectName;
	}
	public void setObjectName(String objectName) {
		this.objectName = objectName;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getTimestamp() {
		return timestamp;
	}
	public void setTimestamp(String timestamp) {
		this.timestamp = timestamp;
	}
	public String getChannelType() {
		return channelType;
	}
	public void setChannelType(String channelType) {
		this.channelType = channelType;
	}
	public String getMsgTimestamp() {
		return msgTimestamp;
	}
	public void setMsgTimestamp(String msgTimestamp) {
		this.msgTimestamp = msgTimestamp;
	}
	public String getMsgUID() {
		return msgUID;
	}
	public void setMsgUID(String msgUID) {
		this.msgUID = msgUID;
	}
}
